/************************************************************
 * MS_BACKUP partition layout
 ************************************************************
 * |-------Active-------| <-- 0
 * |  partition header  |
 * |   partition data   |
 * |  - UNUSED SPACE -  |
 * |  partition tail    |
 * |-------Backup-------| <- total_size_KB / 2
 * |  partition header  |
 * |   partition data   |
 * |  - UNUSED SPACE -  |
 * |  partition tail    |
 * |--------------------| <- total_size_KB
 *
 * GKT_FLASH_PARTITION("PartitionTable", \
 *		GKT_FLASH_PARTITION_MID_TABLE, \
 *		EFLASH, 0, GKT_CONFIG_PARTITION_TABLE_MAXSIZE, \
 *		GKT_FLASH_PARTITION_MODE_MS_BACKUP,	\
 *		GKT_FLASH_PARTITION_F_WRITABLE),
 * _size = GKT_CONFIG_PARTITION_TABLE_MAXSIZE
 *   -> the half of the total_size_KB
 ************************************************************/

/************************************************************
 * PING-PONG partition layout
 ************************************************************
 * |----------0---------| <-- 0
 * |  partition header  |
 * |   partition data   |
 * |  - UNUSED SPACE -  |
 * |  partition tail    |
 * |----------1---------| <- total_size_KB / 2
 * |  partition header  |
 * |   partition data   |
 * |  - UNUSED SPACE -  |
 * |  partition tail    |
 * |--------------------| <- total_size_KB
 *
 * GKT_FLASH_PARTITION("SysCfgData", 0, \
 *		EFLASH, 0, 0x400, \
 *		GKT_FLASH_PARTITION_MODE_PING_PONG, \
 *		GKT_FLASH_PARTITION_F_WRITABLE)
 * _size = 0x400 -> the half of the total_size_KB
 ************************************************************/

/* partition move info */
enum {
	FLASH_PARTITION_MOVE_UPWARD = 0,
	FLASH_PARTITION_MOVE_DOWNWARD,
};
// TODO:
struct _flash_partition_move {
	uint32_t	undetermined[8];
} __ALIGNED(8);
typedef struct _flash_partition_move flash_partition_move_s;


